Repository navigation
fix: удаление заявки одновременно с отправкой оценки - #805
Merged
Merged
Conversation
11 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменено
Если эксперт отправляет первую оценку одновременно с подтверждением удаления лидера из программы, оценка теперь может завершиться. Удаление получает 409 и требует новый просмотр заявок вместо взаимной блокировки запросов.
Зачем
Дополнительный конкурентный сценарий выявил цикл: удаление удерживало Project FOR UPDATE и ожидало программу; отправка оценки удерживала программу и при commit ожидала KEY SHARE проекта для проверки FK.
Реализация
Блокировка проекта заменена на FOR NO KEY UPDATE. Она сохраняет сериализацию изменений лидера/заявок, но допускает FK-проверку новой оценки. Порядок Project → программы → регистрации, проверка прав и подписанного снимка остаются прежними. После commit оценки снимок меняется, поэтому удаление отклоняется без потери данных.
API
Контракт не меняется. Исправляется конкурентное выполнение POST удаления регистрации из API #804.
UI
Не меняется; существующий 409 показывает требование повторного подтверждения.
Permissions
Не меняются. Program scope, actor, preview и повторная проверка прав сохранены.
Проверки
Acceptance criteria
Не проверено
Конкурентные записи над настоящими dev-пользователями не выполнялись. Сам конфликт воспроизведен детерминированно на изолированном PostgreSQL до исправления и успешно проверен после; реальный API проверен безопасными анонимными GET.
Риски / migration
Миграции и клиентские изменения не требуются. PostgreSQL поддерживает NO KEY UPDATE; тест помечен соответствующей DB feature и не претендует на проверку row locks в SQLite. Никакие реальные оценки или участники не менялись в QA.